From: Roger Pau Monné Date: Tue, 26 Nov 2013 08:52:47 +0000 (+0100) Subject: x86/pvh: set only minimal cr0 and cr4 flags in order to use paging X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~5869 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=51e2cac257ec8b4080d89f0855c498cbbd76a5e5;p=xen.git x86/pvh: set only minimal cr0 and cr4 flags in order to use paging Right now Xen sets the WP and NE flags on cr0 for PVH, which are not needed in order to boot with paging enabled. The same happens with cr4, at least on my system OSFXSR, OSXMMEXCPT and MCE are enabled by default when there's no need. Signed-off-by: Roger Pau Monné Acked-by: George Dunlap Acked-by: Mukesh Rathor Acked-by: Eddie Dong --- diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index 4aab971992..44f33cb802 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -1090,13 +1089,11 @@ static int construct_vmcs(struct vcpu *v) /* PVH domains always start in paging mode */ if ( is_pvh_domain(d) ) - v->arch.hvm_vcpu.guest_cr[0] |= X86_CR0_PG | X86_CR0_NE | X86_CR0_WP; + v->arch.hvm_vcpu.guest_cr[0] |= X86_CR0_PG; hvm_update_guest_cr(v, 0); - v->arch.hvm_vcpu.guest_cr[4] = is_pvh_domain(d) ? - (real_cr4_to_pv_guest_cr4(mmu_cr4_features) - & ~HVM_CR4_GUEST_RESERVED_BITS(v)) : 0; + v->arch.hvm_vcpu.guest_cr[4] = is_pvh_domain(d) ? X86_CR4_PAE : 0; hvm_update_guest_cr(v, 4); if ( cpu_has_vmx_tpr_shadow )